import { Container } from 'inversify';

let _container: Container;

export namespace ContainerProvider {
  /**
   * 初始化IOC容器
   */
  export function init() {
    _container = new Container();
  }

  /**
   * 初始化IOC容器
   * @param container IOC容器实例
   */
  export function set(container: Container): void {
    _container = container;
  }

  /**
   * 获取IOC容器
   */
  export function provide(): Container {
    if (!_container) {
      throw new Error('IOC容器未初始化, 请先调用ContainerProvider.set(container)初始化IOC容器');
    }
    return _container;
  }
}
